package mazegame;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;

public interface MazeServerInterface extends Remote {

	public int joinGameRemote(MazeServerInterface playerStub)
			throws RemoteException;

	public GameState moveRemote(int id, Constants.Direction direction)
			throws RemoteException;

	public int getMapSizeRemote() throws RemoteException;

	public GameState getGameStateRemote() throws RemoteException;

	public void setGameStateRemote(GameState gameState) throws RemoteException;

	public PlayerRegistyInfo getPlayerInfoRemote() throws RemoteException;
	
	public ArrayList<MazeServerInterface> getPlayerListRemote() throws RemoteException;
	
	public void setPlayerListRemote( ArrayList<MazeServerInterface> playerList) throws RemoteException;

	public void bindAsServer() throws RemoteException;

	public void bindAsBackupServer() throws RemoteException;

	public void setServerDetails(String serverHost, int serverPort,
			 String backupHost, int backupPort) throws RemoteException;

}
